Ana içeriğe geç

Blok düzeni

bilgi

Bu sayfadaki anlayışınızı artırmak için, TL-B dili ile tanışmanız şiddetle tavsiye edilir.

Blockchain'deki bir blok, tamamlandığında bu merkeziyetsiz defterin kalıcı ve değiştirilemez bir parçası olarak blockchain'e eklenen yeni işlemlerin kaydıdır. Her blok, işlemler verisi, zaman ve bir önceki blok ile ilgili bir referans gibi bilgileri içerir, böylece blokların bir zincirini oluşturur.

TON Blockchain'deki bloklar, sistemin genel karmaşıklığı nedeniyle oldukça karmaşık bir yapıya sahiptir. Bu sayfa, bu blokların yapısını ve düzenini açıklamaktadır.

Blok

Bir blokun ham TL-B şeması şöyle görünür:

block#11ef55aa global_id:int32
info:^BlockInfo value_flow:^ValueFlow
state_update:^(MERKLE_UPDATE ShardState)
extra:^BlockExtra = Block;

Her bir alanı daha yakından inceleyelim.

global_id:int32

Bu blokun oluşturulduğu ağın kimliği. Ana ağ için -239 ve test ağı için -3.

info:^BlockInfo

bilgi

Bu alan, blok hakkındaki bilgileri içerir; örneğin, sürümü, sıra numaraları, tanımlayıcılar ve diğer bayraklar.

block_info#9bc7a987 version:uint32
not_master:(## 1)
after_merge:(## 1) before_split:(## 1)
after_split:(## 1)
want_split:Bool want_merge:Bool
key_block:Bool vert_seqno_incr:(## 1)
flags:(## 8) { flags <= 1 }
seq_no:# vert_seq_no:# { vert_seq_no >= vert_seqno_incr }
{ prev_seq_no:# } { ~prev_seq_no + 1 = seq_no }
shard:ShardIdent gen_utime:uint32
start_lt:uint64 end_lt:uint64
gen_validator_list_hash_short:uint32
gen_catchain_seqno:uint32
min_ref_mc_seqno:uint32
prev_key_block_seqno:uint32
gen_software:flags . 0?GlobalVersion
master_ref:not_master?^BlkMasterInfo
prev_ref:^(BlkPrevInfo after_merge)
prev_vert_ref:vert_seqno_incr?^(BlkPrevInfo 0)
= BlockInfo;
AlanTürAçıklama
versionuint32Blok yapısının sürümü.
not_master(## 1)Bu bloğun bir ana zincir bloğu olup olmadığını belirten bir bayrak.
after_merge(## 1)Bu bloğun iki shardchain'in birleşiminden hemen sonra oluşturulup oluşturulmadığını belirten bir bayrak.
before_split(## 1)Bu bloğun shardchain'inin bölünmesinden hemen önce oluşturulup oluşturulmadığını belirten bir bayrak.
after_split(## 1)Bu bloğun shardchain'inin bölünmesinden hemen sonra oluşturulup oluşturulmadığını belirten bir bayrak.
want_splitBoolBir shardchain bölünmesinin isteyip istenmediğini belirten bir bayrak.
want_mergeBoolBir shardchain birleşmesinin isteyip istenmediğini belirten bir bayrak.
key_blockBoolBu bloğun bir anahtar bloğu olup olmadığını belirten bir bayrak.
vert_seqno_incr(## 1)Dikey sıra numarasının artışı.
flags(## 8)Bloğa ait ek bayraklar.
seq_no#Bloğa ait sıra numarası.
vert_seq_no#Bloğa ait dikey sıra numarası.
shardShardIdentBu bloğun ait olduğu shard'ın tanımlayıcısı.
gen_utimeuint32Bloğun üretim zamanı.
start_ltuint64Bloğa ait başlangıç mantıksal zamanı.
end_ltuint64Bloğa ait bitiş mantıksal zamanı.
gen_validator_list_hash_shortuint32Bu bloğun üretimi sırasında doğrulayıcılar listesinin kısa hash'i.
gen_catchain_seqnouint32Bu blok ile ilişkili Catchain sıra numarası.
min_ref_mc_seqnouint32Referans verilen ana zincir bloğunun minimum sıra numarası.
prev_key_block_seqnouint32Önceki anahtar bloğun sıra numarası.
gen_softwareGlobalVersionBloğu üreten yazılımın versiyonu. Sadece version'ın ilk biti 1 olarak ayarlandığında sunulur.
master_refBlkMasterInfoBloğun ana olmadığında ana bloğa referans. Referans olarak saklanmıştır.
prev_refBlkPrevInfo after_mergeÖnceki bloğa referans. Referans olarak saklanmıştır.
prev_vert_refBlkPrevInfo 0Dikey sıradaki önceki bloğa referans, varsa. Referans olarak saklanmıştır.

value_flow:^ValueFlow

Bu alan, blok içindeki para akışını, toplanan ücretler ve para içeren diğer işlemleri temsil eder.

value_flow#b8e48dfb ^[ from_prev_blk:CurrencyCollection
to_next_blk:CurrencyCollection
imported:CurrencyCollection
exported:CurrencyCollection ]
fees_collected:CurrencyCollection
^[
fees_imported:CurrencyCollection
recovered:CurrencyCollection
created:CurrencyCollection
minted:CurrencyCollection
] = ValueFlow;
AlanTürAçıklama
from_prev_blkCurrencyCollectionÖnceki bloktan para akışını temsil eder.
to_next_blkCurrencyCollectionBir sonraki bloka para akışını temsil eder.
importedCurrencyCollectionBloka ithal edilen para akışını temsil eder.
exportedCurrencyCollectionBloktan ihraç edilen para akışını temsil eder.
fees_collectedCurrencyCollectionBlokta toplanan toplam ücret miktarı.
fees_importedCurrencyCollectionBloka ithal edilen ücret miktarı. Sadece ana zincirde sıfırdan farklıdır.
recoveredCurrencyCollectionBlokta kurtarılan para miktarı. Sadece ana zincirde sıfırdan farklıdır.
createdCurrencyCollectionBlokta oluşturulan yeni paranın miktarı. Sadece ana zincirde sıfırdan farklıdır.
mintedCurrencyCollectionBlokta madencilik yapılan para miktarı. Sadece ana zincirde sıfırdan farklıdır.

state_update:^(MERKLE_UPDATE ShardState)

Bu alan, shard durumunun güncellemelerini temsil eder.

!merkle_update#02 {X:Type} old_hash:bits256 new_hash:bits256
old:^X new:^X = MERKLE_UPDATE X;
AlanTürAçıklama
old_hashbits256Shard durumunun eski hash'i.
new_hashbits256Shard durumunun yeni hash'i.
oldShardStateShard'ın eski durumu. Referans olarak saklanmıştır.
newShardStateShard'ın yeni durumu. Referans olarak saklanmıştır.

ShardState

ShardState, ya shard hakkında bilgi içerebilir ya da bu shard bölündüğünde, sol ve sağ bölünmüş parçalar hakkında bilgi içerebilir.

_ ShardStateUnsplit = ShardState;
split_state#5f327da5 left:^ShardStateUnsplit right:^ShardStateUnsplit = ShardState;

ShardState Bölünmemiş

shard_state#9023afe2 global_id:int32
shard_id:ShardIdent
seq_no:uint32 vert_seq_no:#
gen_utime:uint32 gen_lt:uint64
min_ref_mc_seqno:uint32
out_msg_queue_info:^OutMsgQueueInfo
before_split:(## 1)
accounts:^ShardAccounts
^[ overload_history:uint64 underload_history:uint64
total_balance:CurrencyCollection
total_validator_fees:CurrencyCollection
libraries:(HashmapE 256 LibDescr)
master_ref:(Maybe BlkMasterInfo) ]
custom:(Maybe ^McStateExtra)
= ShardStateUnsplit;
AlanTürGerekliAçıklama
global_idint32EvetBu shard'ın ait olduğu ağın kimliği. Ana ağ için -239 ve test ağı için -3.
shard_idShardIdentEvetShard'ın tanımlayıcısı.
seq_nouint32EvetBu shardchain ile ilişkili en son sıra numarası.
vert_seq_no#EvetBu shardchain ile ilişkili en son dikey sıra numarası.
gen_utimeuint32EvetShard'ın oluşturulmasıyla ilgili zamanı.
gen_ltuint64EvetShard'ın oluşturulmasıyla ilgili mantıksal zaman.
min_ref_mc_seqnouint32EvetReferans verilen en son ana zincir bloğunun sıra numarası.
out_msg_queue_infoOutMsgQueueInfoEvetBu shard'ın dış mesaj kuyruğuna ilişkin bilgi. Referans olarak saklanmıştır.
before_split## 1EvetBu shardchain'in bir sonraki blokta bölünüp bölünmeyeceğini belirten bir bayrak.
accountsShardAccountsEvetShard'daki hesapların durumu. Referans olarak saklanmıştır.
overload_historyuint64EvetShard için aşırı yük olaylarının geçmişi. Sharding ile yük dengeleme amacıyla kullanılır.
underload_historyuint64EvetShard için düşük yük olaylarının geçmişi. Sharding ile yük dengeleme amacıyla kullanılır.
total_balanceCurrencyCollectionEvetShard için toplam bakiye.
total_validator_feesCurrencyCollectionEvetShard için toplam doğrulayıcı ücretleri.
librariesHashmapE 256 LibDescrEvetBu shard'ın kütüphane tanımlarının hashmap'i. Şu anda, yalnızca ana zincirde boş olmayan bir alan.
master_refBlkMasterInfoHayırAna blok bilgisine bir referans.
customMcStateExtraHayırShard durumu için özel ek veri. Bu alan yalnızca ana zincirde mevcuttur ve tüm ana zincir ile ilgili verileri içerir. Referans olarak saklanmıştır.

ShardState Bölünmüş

AlanTürAçıklama
leftShardStateUnsplitSol bölünmüş shard'ın durumu. Referans olarak saklanmıştır.
rightShardStateUnsplitSağ bölünmüş shard'ın durumu. Referans olarak saklanmıştır.

extra:^BlockExtra

Bu alan, blok hakkında ek bilgi içerir.

block_extra in_msg_descr:^InMsgDescr
out_msg_descr:^OutMsgDescr
account_blocks:^ShardAccountBlocks
rand_seed:bits256
created_by:bits256
custom:(Maybe ^McBlockExtra) = BlockExtra;
AlanTürGerekliAçıklama
in_msg_descrInMsgDescrEvetBloktaki gelen mesajların tanımlayıcısı. Referans olarak saklanmıştır.
out_msg_descrOutMsgDescrEvetBloktaki giden mesajların tanımlayıcısı. Referans olarak saklanmıştır.
account_blocksShardAccountBlocksEvetBlokta işlenen tüm işlemler ve shard'a atanan hesapların durum güncellemeleri. Referans olarak saklanmıştır.
rand_seedbits256EvetBlok için rastgele tohum.
created_bybits256EvetBloğu oluşturan varlık (genellikle bir doğrulayıcının kamu anahtarı).
customMcBlockExtraHayırBu alan yalnızca ana zincirde mevcut olup, tüm ana zincir ile ilgili verileri içerir. Blok için özel ek veri. Referans olarak saklanmıştır.

McBlockExtra

Bu alan, ana zincir bloğu hakkında ek bilgi içerir.

masterchain_block_extra#cca5
key_block:(## 1)
shard_hashes:ShardHashes
shard_fees:ShardFees
^[ prev_blk_signatures:(HashmapE 16 CryptoSignaturePair)
recover_create_msg:(Maybe ^InMsg)
mint_msg:(Maybe ^InMsg) ]
config:key_block?ConfigParams
= McBlockExtra;
AlanTürGereklidirAçıklama
key_block## 1EvetBloğun bir anahtar bloğu olup olmadığını belirten bayrak.
shard_hashesShardHashesEvetİlgili shard zincirlerinin en son bloklarının hash'leri.
shard_feesShardFeesEvetBu blokta tüm shard'lardan toplanan toplam ücretler.

| prev_blk_signatures | HashmapE 16 CryptoSignaturePair | Evet | Önceki blok imzaları. | | recover_create_msg | InMsg | Hayır | Varsa, ek para birimlerinin kurtarılmasına ilişkin mesaj. Bir referansta saklanır. | | mint_msg | InMsg | Hayır | Varsa, ek para birimlerinin basımına ilişkin mesaj. Bir referansta saklanır. | | config | ConfigParams | Hayır | Bu blok için geçerli yapılandırma parametreleri. Bu alan yalnızca key_block ayarlandığında bulunur. |

Ayrıca bakınız


Önemli Notlar

  • :::tip Anahtar Blok: key_block alanının varlığının, blok zinciri mimarisi için önemli olduğunu unutmayın.
  • Şard Ücretleri: shard_fees toplamının doğru hesaplanmasına dikkat edin; bu, ağ işlerken kaynak yönetimi için kritik öneme sahiptir.

Hatırlatıcı: config alanı yalnızca key_block ayarlandığında mevcuttur.
— Dikkatli olun, bu durum yapılandırmanızı etkileyebilir.